const express = require('express')                 // 引入express 框架
const app = express()                              // 创建app对象
const server = require('http').createServer(app)   // 使用http创建server,同时传入express  app（处理静态资源)
const io = require('socket.io')(server)            // 引入socket.io ，将server作为参数传入 （和HTTP server进行关联）


// 配置静态资源目录
app.use(express.static(__dirname+ '/public'))


// 使用 对象io.on 取监听 connection 用户是否链接上了聊天室
io.on('connection', socket => {
    // 客户端链接的一个标识，就像身份证一样
    console.log(socket.id)
    console.log('有用户链接了聊天室！')

    // on 和 emit 可以实现服务端与客户端的双向通信
    // 不管是服务端还是客户端都有 on 和 emit 这两个函数
    // 如果客户端使用emit 发送消息 服务端就是用on 来处理，  反之是一样的
    // socket.io的和兴就是这两个函数

    // 服务端 使用emit 触发客户端监听的事件
    /* 
        io.emit() 是像所有的客户端广播
        socket.emit() 向建立了链接后的进行广播
        socket.broadcast.emit() 向建立链接外的客服端进行广播
     */
    io.emit('hello', '你好我是服务端的数据')


    // 服务端使用on 监听事件
    socket.on('client', data => {
        console.log('客户端发来的数据:' +data)
    })

})


// 启动服务
server.listen(3000, () => {
    console.log('server is run 9000')
})